home *** CD-ROM | disk | FTP | other *** search
/ The War in the Pacific / The War in the Pacific.iso / setup.mst < prev    next >
Text File  |  1995-09-15  |  25KB  |  660 lines

  1. rem ****************************************************************************
  2. rem *
  3. rem *    File:        setup.mst
  4. rem *
  5. rem *    Author:        
  6. rem *
  7. rem *    Purpose:    Script file for MS setup engine.
  8. rem *
  9. rem *    Change History:
  10. rem *
  11. rem *        xx.6.95, CLN    Add installation details for Flic player, and
  12. rem *                Accusoft library.
  13. rem *        19.7.95, CLN    Add extra installation details for Flic player.
  14. rem *        2.8.95, CLN    Read PM icon caption from descriptor file
  15. rem *                as per uninstall program.
  16. rem *        7.8.95, CLN    Remove 'wave' & 'midi' volume levels,
  17. rem *                add single 'volume' entry.
  18. rem *        7.8.95, CLN    Add installation of On-line Registration
  19. rem *                program.
  20. rem *        8.8.95, CLN    Use icon in launch.exe - remove title.ico.
  21. rem *        10.8.95, CLN    Add mechanism to display promo.
  22. rem *        12.8.95, CLN    Begin tidying code.
  23. rem *        15.8.95, CLN    Additional code tidying.
  24. rem *        17.8.95, CLN    Add conditional code for encrypted discs.
  25. rem *        02.09.95, CLN    Add QuickTime version checking.
  26. rem *        15.09.95, CLN    Add DLL call to update system configuration.
  27. rem *                Add code to display read-me file.
  28. rem *
  29. rem ****************************************************************************
  30.  
  31. '$INCLUDE 'setupapi.inc'
  32. '$INCLUDE 'mscpydis.inc'    ''System
  33. '$INCLUDE 'msdetect.inc'    ''Detects Available Disk Space      
  34. '$INCLUDE 'pmgrdde.inc'        ''Program Manager DDE
  35. '$INCLUDE 'flagtowr.inc'    ''FlagTower title values
  36.  
  37. ''Dialog ID's
  38. CONST WELCOME       = 100
  39. CONST ASKQUIT       = 200
  40. CONST ASKPATH       = 300
  41. CONST EXITFAILURE   = 400
  42. CONST EXITQUIT      = 600
  43. CONST EXITSUCCESS   = 700
  44. CONST APPHELP       = 900
  45. CONST SMALLWIN      = 2200
  46. CONST RESTART       = 2600
  47. CONST RESTARTII     = 2700
  48. CONST BADPATH       = 6400
  49.  
  50. 'GLOBAL SizeReq&        '' Total Disk Size required for installation
  51.  
  52. GLOBAL WinDir$            ''Windows directory
  53. GLOBAL WinSysDir$        ''Windows system directory
  54. GLOBAL WinSys32Dir$        ''Win32 system directory
  55. GLOBAL MinorVer%        ''Windows minor version number
  56. GLOBAL OnNT$            ''NT flag
  57.  
  58. GLOBAL SrcDir$            ''Source directory                   
  59. GLOBAL CDDrive$            ''CD-Rom drive letter
  60. GLOBAL DbPath$            ''Database directory
  61.  
  62. GLOBAL AVDest$            ''Directory to put AV engine libraries
  63.  
  64. global isInstallQTW as integer
  65.  
  66. ''----- External functions called by Video for Windows setup
  67. DECLARE FUNCTION ExitWindowsExec  LIB "user" (Exec$, Param$) AS INTEGER
  68. DECLARE FUNCTION OnWindowsNT LIB "iniupd.dll" AS INTEGER
  69. DECLARE SUB      Reboot LIB "iniupd.dll"
  70. DECLARE FUNCTION VflatdPresent LIB "iniupd.dll" AS INTEGER
  71. DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  72.  
  73. ''----- External functions called by WinG setup
  74. DECLARE FUNCTION GetRealSystemDirectory LIB "setuphlp.dll" (szDir$, cbBuf%) AS INTEGER
  75. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.dll" (szOrig$, szNew$) AS INTEGER
  76. DECLARE SUB      RenameFilePlease LIB "setuphlp.dll" (szOrig$, szNew$)
  77. DECLARE FUNCTION RestartWindows LIB "setuphlp.dll" AS INTEGER
  78.                  
  79. ''----- Effects library functions used
  80. DECLARE FUNCTION DivertBackMessage LIB "avsetup.dll" (WinHandle%, InstHandle%) AS INTEGER
  81. DECLARE SUB      MaxWindowArea LIB "avsetup.dll" (WinHandle%)
  82. DECLARE FUNCTION ShowBitmap LIB "avsetup.dll" (WinHandle%, szName$, nFx%, nFxTime%) AS INTEGER          
  83. DECLARE FUNCTION SetFileAttribute LIB "avsetup.dll" (szName$, nMode%) AS INTEGER
  84. DECLARE FUNCTION setDOSFileAttr LIB "avsetup.dll" (szName$, nAttr%, nIsOverwrite%) AS INTEGER
  85. DECLARE FUNCTION getSystemRAM LIB "avsetup.dll" AS INTEGER
  86. DECLARE FUNCTION readTitleDescription LIB "avsetup.dll" (szDesc$, lenDesc%, szDescFile$) AS INTEGER
  87. DECLARE FUNCTION fnnGetQTWVersion LIB "qtw_vers.dll" (ourVersion&) AS INTEGER
  88. DECLARE FUNCTION CallModifyCONFIG LIB "confchk.dll" (WinHandle%) AS INTEGER
  89.  
  90. ''----- Local functions
  91. DECLARE FUNCTION CheckVideoSystem(WinMajVer%, WinMinVer%, ProcType%) AS INTEGER
  92. DECLARE FUNCTION CreateTitleINIFile(szINI$, szCD$, szDbPath$) AS INTEGER
  93. DECLARE SUB      Install
  94. DECLARE FUNCTION MakePath(szDir$, szFile$) AS STRING
  95. DECLARE SUB      UpdateWinG32(szOrig$)
  96.  
  97. global Path_AdvertRoot as string
  98. global Path_AdvertBinary as string
  99. global Path_AdvertEngine as string
  100. global Path_AdvertDatabase as string
  101. global Path_AdvertUtility as string
  102.  
  103. global Path_TitleRoot as string
  104. global Path_TitleBinary as string
  105. global Path_TitleEngine as string
  106. global Path_TitleDatabase as string
  107. global Path_TitleUtility as string
  108.  
  109. INIT:
  110.   
  111.     CUIDLL$   = "ftcuistf.dll"          ''Custom user interface dll
  112.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  113.  
  114.     MajorVer%      = GetWindowsMajorVersion()
  115.     MinorVer%      = GetWindowsMinorVersion()
  116.     Processor%      = GetProcessorType()
  117.     WinDir$       = GetWindowsDir()
  118.     WinSysDir$      = GetWindowsSysDir()
  119.     WinSys32Dir$  = WinDir$ + "system32"
  120.     SrcDir$       = GetSymbolValue("STF_SRCDIR")
  121.  
  122.     'Make sure the user's system can handle Video for Windows
  123.     dummy% = CheckVideoSystem(MajorVer%, MinorVer%, Processor%) 
  124.     IF OnWindowsNT() THEN
  125.         OnNT$ = "TRUE"
  126.     END IF
  127.                            
  128.     'Read setup's .INF file                           
  129.     szInf$ = GetSymbolValue("STF_SRCINFPATH")                                 
  130.     IF szInf$ = "" THEN
  131.        szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  132.     END IF
  133.     ReadInfFile szInf$
  134.  
  135.     'Divert paint messages of background window to our own routine                      
  136.     dummy% = DivertBackMessage(HwndFrame(), HinstFrame())
  137.     MaxWindowArea(HwndFrame())
  138.     dummy% = ShowBitmap(HwndFrame(), SrcDir$+"logo.bmp",106,1000)     
  139.             
  140.                
  141. WELCOME:
  142.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  143.  
  144.     IF sz$ = "CONTINUE" THEN
  145.         UIPop 1
  146.     ELSE
  147.         GOSUB ASKQUIT
  148.         GOTO WELCOME
  149.     END IF
  150.  
  151.                                                       
  152. GETPATH: 
  153.     AVDest$ = Dir_DefaultInstall
  154.  
  155.     SetSymbolValue "EditTextIn", AVDest$
  156.     SetSymbolValue "EditTextOut", AVDest$
  157.     SetSymbolValue "EditFocus", "END"
  158. GETPATHL1:
  159.     SetSymbolValue "DLGEVENT", ""
  160.  
  161.     sz$ = UIStartDlg(CUIDLL$, ASKPATH, "FEditDlgProc", 0, "")
  162.     AVDest$ = GetSymbolValue("EditTextOut")
  163.     
  164.     IF sz$ = "CONTINUE" THEN
  165.         IF IsDirWritable(AVDest$) = 0 THEN 
  166.            GOSUB BADPATH
  167.            GOTO GETPATHL1
  168.         END IF
  169.         UIPop 1
  170.     ELSE 
  171.         IF sz$ = "EXIT" THEN
  172.             GOSUB ASKQUIT
  173.         END IF
  174.         GOTO GETPATH        
  175.     END IF
  176.           
  177.           
  178.     rem *** Prepare copy list
  179.  
  180.     ClearCopyList                                           
  181.  
  182. '$ifdef HasAdvert
  183.     Path_AdvertRoot = AVDest$ + Dir_AdvertRoot
  184.     Path_AdvertBinary = Path_AdvertRoot + Dir_Binary
  185.     Path_AdvertEngine =  Path_AdvertRoot + Dir_Binary
  186.     Path_AdvertDatabase =  Path_AdvertRoot + Dir_Database
  187.     Path_AdvertUtility =  Path_AdvertRoot + Dir_Utility
  188. '$endif
  189.  
  190.     Path_TitleRoot = AVDest$ + Dir_TitleRoot
  191.     Path_TitleBinary = Path_TitleRoot + Dir_Binary
  192.     Path_TitleEngine =  Path_TitleRoot + Dir_Binary
  193.     Path_TitleDatabase =  Path_TitleRoot + Dir_Database
  194.     Path_TitleUtility =  Path_TitleRoot + Dir_Utility
  195.  
  196. '' ------------------- Copy list for Video for Windows --------------------
  197. ''Remove DCISVGA file
  198.     RemoveFile WinSysDir$+"dcisvga.drv", cmoForce
  199.  
  200.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN            
  201.         'These files not necessary on Windows NT
  202.         AddSectionFilesToCopyList "VfW MPlayer", SrcDir$, WinDir$
  203.         AddSectionFilesToCopyList "VfW OLE2", SrcDir$, WinSysDir$
  204.     END IF
  205.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  206.     AddSectionFilesToCopyList "VfW ACM Drivers", SrcDir$, WinSysDir$
  207.     AddSectionFilesToCopyList "VfW AVICodecs", SrcDir$, WinSysDir$
  208.     IF OnNT$ = "TRUE" THEN
  209.         AddSectionFilesToCopyList "VfW NT MSVideo", SrcDir$, WinSys32Dir$
  210.     ENDIF
  211.  
  212. '' --------------------- Copy list for WinG -----------------------
  213.     AddSectionFilesToCopyList "WinG runtime", SrcDir$, WinSysDir$
  214.     Dest1$ = MakePath (WinSysDir$,"Wing32.dll")
  215.     Dest2$ = MakePath (WinSysDir$,"Wing32.xxx")
  216.     RenameFilePlease Dest1$, Dest2$
  217.  
  218. '' ---------------------- Copy list for WinToon -----------------------
  219.     AddSectionFilesToCopyList "WinToon runtime", SrcDir$, WinSysDir$
  220.  
  221. '' --------------------- Copy list for MediaView ----------------------
  222.     AddSectionFilesToCopyList "MediaView runtime", SrcDir$, WinSysDir$
  223.  
  224.     rem *** Copy list for QuickTime
  225.  
  226.     isInstallQTW = 0
  227.  
  228.     qtwVersion& = 8748
  229.  
  230.     s% = fnnGetQTWVersion( qtwVersion& )
  231.  
  232.     if s% = 1 then
  233.         isInstallQTW = 1
  234.  
  235.         AddSectionFilesToCopyList "QuickTime 2.02 runtime", SrcDir$, WinSysDir$
  236.     endif
  237.  
  238. '' ------------------------ Copy list for ADS -------------------------
  239.     AddSectionFilesToCopyList "ADS", SrcDir$, WinSysDir$
  240.  
  241. '' ------------------------ Copy list for AAPLAY -------------------------
  242.     AddSectionFilesToCopyList "AAPLAY Animation", SrcDir$, WinSysDir$
  243.  
  244. '' ------------------------ Copy list for Accusoft Pro Gold -------------------------
  245. rem    AddSectionFilesToCopyList "Accusoft Pro Gold", SrcDir$, WinSysDir$
  246.  
  247. '$ifdef IsEncrypted
  248.     rem *** Copy list for C-Dilla
  249.  
  250.     AddSectionFilesToCopyList "C-Dilla system", SrcDir$, WinDir$
  251.     AddSectionFilesToCopyList "C-Dilla title", SrcDir$, Path_TitleBinary
  252. '$ifdef HasAdvert
  253.     AddSectionFilesToCopyList "C-Dilla title", SrcDir$, Path_AdvertBinary
  254. '$endif
  255. '$endif
  256.  
  257. '' --------------------- Copy list for AV ENGINE ----------------------
  258.     AddSectionFilesToCopyList Sect_EngineBinary, SrcDir$, Path_TitleBinary
  259. '$ifdef HasAdvert
  260.     AddSectionFilesToCopyList Sect_EngineBinary, SrcDir$, Path_AdvertBinary
  261. '$endif
  262.  
  263.     rem *** Copy list for title
  264.  
  265.     AddSectionFilesToCopyList Sect_TitleBinary, SrcDir$, Path_TitleBinary
  266.     AddSectionFilesToCopyList Sect_TitleDatabase, SrcDir$, Path_TitleDatabase
  267.     AddSectionFilesToCopyList Sect_TitleUtility, SrcDir$, AVDest$
  268.     AddSectionFilesToCopyList Sect_TitleSystem, SrcDir$, WinSysDir$
  269.     AddSectionFilesToCopyList "Accusoft Pro Gold", SrcDir$, Path_TitleBinary
  270.  
  271. '$ifdef HasAdvert
  272.     AddSectionFilesToCopyList Sect_AdvertBinary, SrcDir$, Path_AdvertBinary
  273.     AddSectionFilesToCopyList Sect_Advertdatabase, SrcDir$, Path_AdvertDatabase
  274.     AddSectionFilesToCopyList "Accusoft Pro Gold", SrcDir$, Path_AdvertBinary
  275. '$endif
  276.  
  277. '' -------- Check space on hard disk --------
  278.     SizeReq& = GetCopyListCost ("","", "")
  279.     IF SizeReq& <> 0 THEN
  280.         GOSUB SMALLWIN
  281.         END
  282.     END IF
  283.  
  284.                               
  285. '' Perform install                              
  286.     Install
  287.  
  288. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  289. '' else, it gives the user the choice
  290.     RESTRT% = RestartListEmpty ()
  291.     Exe$ = WinDir$ + "\_msrstrt.exe"
  292.     Batch$ = WinDir$ + "\_mssetup.bat"
  293.     empty$ = ""
  294.     
  295. RESTART:
  296.     IF RESTRT% = 0 THEN
  297.        sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfo0DlgProc", 0, "")
  298.        IF sz$ = "REACTIVATE" THEN
  299.                GOTO RESTART
  300.        ENDIF
  301.        I% = ExitExecRestart ()
  302.        RemoveFile Exe$, cmoForce
  303.        RemoveFile Batch$, cmoForce
  304.        END
  305.     ELSE
  306.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  307.        IF sz$ = "CONTINUE" THEN
  308.                I% = ExitWindowsExec (Exe$, empty$)                             
  309.                IF I% = 0 THEN
  310.                    GOTO RESTART
  311.                ELSE
  312.                  END
  313.                ENDIF
  314.        ELSEIF sz$ = "EXIT" THEN
  315.                UIPopAll
  316.               END
  317.        ELSEIF sz$ = "REACTIVATE" THEN
  318.                GOTO RESTART
  319.        ELSE
  320.               UIPop 1
  321.        END IF
  322.     END IF
  323.  
  324.  
  325. QUIT:
  326.     ON ERROR GOTO ERRQUIT
  327.  
  328.     IF ERR = 0 THEN
  329.         dlg% = EXITSUCCESS
  330.     ELSEIF ERR = STFQUIT THEN
  331.         dlg% = EXITQUIT
  332.     ELSE
  333.         dlg% = EXITFAILURE
  334.     END IF
  335. QUITL1:
  336.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  337.     IF sz$ = "REACTIVATE" THEN
  338.         GOTO QUITL1
  339.     END IF
  340.     UIPop 1
  341.     END
  342.  
  343. ERRQUIT:
  344.     i% = DoMsgBox("An installation problem occured.", "Setup Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  345.     END
  346.  
  347.  
  348. ASKQUIT:
  349.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  350.  
  351.     IF sz$ = "EXIT" THEN
  352.         UIPopAll
  353. ''        ERROR STFQUIT
  354.     END
  355.     ELSEIF sz$ = "REACTIVATE" THEN
  356.         GOTO ASKQUIT
  357.     ELSE
  358.         UIPop 1
  359.     END IF
  360.     RETURN
  361.  
  362. SMALLWIN:
  363.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  364.     IF sz$ = "REACTIVATE" THEN
  365.         GOTO SMALLWIN
  366.     END IF
  367.     UIPop 1
  368.     RETURN
  369.           
  370. BADPATH:
  371.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  372.     IF sz$ = "REACTIVATE" THEN
  373.         GOTO BADPATH
  374.     END IF
  375.     UIPop 1
  376.     RETURN
  377.  
  378. '**
  379. '** Purpose:
  380. '**     Performs all installation operations.
  381. '** Arguments:
  382. '**     none.
  383. '** Returns:
  384. '**     none.
  385. '*************************************************************************
  386. SUB Install STATIC           
  387.  
  388.     rem *** Change file attribute of 'flagtowr.ttl' to "normal" so it is visible
  389.  
  390.     dummy% = setDOSFileAttr( Path_TitleUtility + FN_Description, 0, 1 )
  391.     dummy% = setDOSFileAttr( Path_AdvertUtility + FN_Description, 0, 1 )
  392.  
  393.     SetRestartDir WinDir$
  394.     CopyFilesInCopyList
  395.     UpdateWinG32 WinSysDir$
  396.  
  397. ''<-------------------- BACK UP INI FILES HERE !!! ---------------------->
  398.     inia$ = MakePath(WinDir$, "win.ini")
  399.     inib$ = MakePath(WinDir$, "win.ftw")
  400.     CopyFile inia$, inib$, cmoOverwrite, 0
  401.     inia$ = MakePath(WinDir$, "system.ini")
  402.     inib$ = MakePath(WinDir$, "system.ftw")
  403.     CopyFile inia$, inib$, cmoOverwrite, 0
  404.                                                                               
  405.                                                                               
  406. ''----------------- Update INI files for Video for Windows ---------------
  407. ''Updating WIN.INI and SYSTEM.INI
  408. ''Only update SYSTEM.INI  on NT or next version of Windows for other codecs
  409.  
  410.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  411.         IF VflatdPresent() = 0 THEN
  412.                CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  413.         END IF
  414.     END IF
  415.  
  416.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  417.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  418.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  419.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "IR32.dll", cmoOverwrite
  420.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  421.     I% = DoesIniKeyExist ("system.ini", "Drivers", "VIDC.RT21")
  422.     IF I% = 0  THEN
  423.        CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21_r.dll", cmoOverwrite
  424.     END IF
  425.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "ir21_r.dll", cmoOverwrite
  426.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  427.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  428.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  429.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  430.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  431.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  432.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  433.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  434.  
  435.  
  436.     if isInstallQTW = 1 then
  437.  
  438.         rem *** Update INI files for QuickTime
  439.  
  440.         CreateIniKeyValue "win.ini", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  441.         CreateIniKeyValue "win.ini", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  442.         CreateIniKeyValue "win.ini", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  443.         i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(WinSysDir$, "mciqtw.drv"), "SYSTEM.INI")
  444.  
  445.         rem *** Create QTW.INI
  446.         ini$ = MakePath(WinDir$, "qtw.ini")
  447.         CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  448.         RemoveIniKey ini$, "video", "optimize", cmoNone
  449.     endif
  450.  
  451.     rem Compatibility hacks.
  452.     i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "system.ini")
  453.     CreateIniKeyValue "win.ini", "Mach", "DeviceBitmap", "off", cmoOverwrite
  454.  
  455.     rem *** Update INI files for AAPLAY
  456.  
  457.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "FullScreen", "AAVGA.DLL", cmoOverwrite
  458.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "DualScreen", "yes", cmoOverwrite
  459.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "Int2fSwitch", "no", cmoOverwrite
  460.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "WaveAudio", "c,522", cmoOverwrite
  461.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "flc", "Animation1", cmoOverwrite
  462.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "fli", "Animation1", cmoOverwrite
  463.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "aas", "Animation1", cmoOverwrite
  464.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "Animation1", "mciaap.drv", cmoOverwrite
  465.  
  466. ''---------------- Create INI files for title ------------------ 
  467.  
  468.     CDDrive$ = MID$(SrcDir$,1,1)          
  469.  
  470.     CreateDir Path_TitleRoot, cmoNone
  471.     CreateDir Path_TitleBinary, cmoNone
  472.     CreateDir Path_TitleDatabase, cmoNone
  473.     dummy% = CreateTitleINIFile( Path_TitleBinary+"\"+INI_Title, CDDrive$, Path_TitleDatabase )
  474.  
  475. '$ifdef HasAdvert
  476.     CreateDir Path_AdvertRoot, cmoNone
  477.     CreateDir Path_AdvertBinary, cmoNone
  478.     CreateDir Path_AdvertDatabase, cmoNone
  479.     dummy% = CreateTitleINIFile( Path_AdvertBinary+"\"+INI_Advert, CDDrive$, Path_AdvertDatabase )
  480. '$endif
  481.  
  482.     rem *** Change file attribute of 'flagtowr.ttl' to Read-only+Hidden
  483.  
  484.     dummy% = setDOSFileAttr( Path_TitleUtility + FN_Description, 3, 1 )
  485. '$ifdef HasAdvert
  486.     dummy% = setDOSFileAttr( Path_AdvertUtility + FN_Description, 3, 1 )
  487. '$endif
  488.  
  489.     rem *** create unitdb.mbf in title database directory to aid performance
  490.  
  491.     CopyFile Path_TitleDatabase+"\unitbase.mbf", Path_TitleDatabase+"\unitdb.mbf", cmoOverwrite, 0
  492. '$ifdef HasAdvert
  493.     CopyFile Path_AdvertDatabase+"\unitbase.mbf", Path_AdvertDatabase+"\unitdb.mbf", cmoOverwrite, 0
  494. '$endif
  495.  
  496. ''------ Register Video for Windows components -----
  497. ''Do not register components not installed with Video for Windows on NT or next version of Windows.
  498.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  499.         Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  500.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  501.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  502.                                    
  503.     '' Mplayer
  504.         CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  505.  
  506.     END IF    ''NT and next version of Windows installation stop here.
  507.  
  508.     Run ("profdisp.exe")  ''Profile display for Video for Windows
  509.  
  510.     dim    PMI_Title as string
  511.     dim    PMI_Advert as string
  512.  
  513.     PMI_Title = string$( 110, 32 )
  514.     s% = readTitleDescription( PMI_Title, 110, Path_TitleUtility + FN_Description )
  515.  
  516. '$ifdef HasAdvert
  517.     PMI_Advert = string$( 110, 32 )
  518.     s% = readTitleDescription( PMI_Advert, 110, Path_AdvertUtility + FN_Description )
  519. '$endif
  520.  
  521.     rem *** Create Program Manager Group
  522.  
  523.     CreateProgmanGroup PMG_FlagTower, "", cmoNone
  524.     ShowProgmanGroup PMG_FlagTower, 1, cmoNone
  525.     
  526.     rem *** Create Icon(s)
  527.  
  528.     s% = pmDeleteItem( PMI_Title )
  529. '$ifdef HasAdvert
  530.     s% = pmDeleteItem( PMI_Advert )
  531. '$endif
  532.  
  533.     TitleDLL$ = Path_TitleBinary+"\"+DLL_Title
  534.     Launch$   = Path_TitleBinary+"\LAUNCH.EXE "
  535. '$ifdef IsEncrypted
  536.     Other$    = Path_TitleBinary+"\ZLAUNCH.EXE "+","+ str$( Icon_Title ) +",0,0,"+Path_TitleBinary
  537. '$else
  538.     Other$    = Launch$+","+ str$( Icon_Title ) +",0,0,"+Path_TitleBinary
  539. '$endif
  540.  
  541.     CreateProgmanItem PMG_FlagTower, PMI_Uninstall, AVDest$ + "\uninstal.exe", "", cmoOverwrite
  542. '$ifndef IsPromo
  543.     CreateProgmanItem PMG_FlagTower, PMI_OnLineReg, AVDest$ + "\onlinreg.exe", "", cmoOverwrite
  544. '$endif
  545.     CreateProgmanItem PMG_FlagTower, PMI_Title, Launch$+TitleDLL$ , Other$ , cmoOverwrite
  546. '$ifdef HasAdvert
  547.     CreateProgmanItem PMG_StartUp, PMI_Advert, Path_AdvertBinary + "\runpromo.exe", "", cmoOverwrite
  548. '$endif
  549.  
  550. '$ifdef HasAdvert
  551.     TitleDLL$ = Path_AdvertBinary+"\"+DLL_Advert
  552.     Launch$   = Path_AdvertBinary+"\LAUNCH.EXE "
  553. '$ifdef IsEncrypted
  554.     Other$    = Path_AdvertBinary+"\ZLAUNCH.EXE "+","+ str$( Icon_Advert ) +",0,0,"+Path_AdvertBinary
  555. '$else
  556.     Other$    = Launch$+","+ str$( Icon_Advert ) +",0,0,"+Path_AdvertBinary
  557. '$endif
  558.  
  559.     CreateProgmanItem PMG_FlagTower, PMI_Advert, Launch$+TitleDLL$ , Other$ , cmoOverwrite
  560. '$endif
  561.  
  562.     i% = CallModifyCONFIG( HwndFrame() )
  563.  
  564.         Run ( "notepad  " + SrcDir$ + "readme.txt" )
  565.  
  566. END SUB
  567.                                                                                               
  568. ' -------------------------------------------------------------------------------------------- 
  569. ' -------------------------------------------------------------------------------------------- 
  570. ' -------------------------------------------------------------------------------------------- 
  571. ' Miscellaneous Functions 
  572. ' -------------------------------------------------------------------------------------------- 
  573.  
  574. '**
  575. '** Purpose:
  576. '**     Appends a file name to the end of a directory path,
  577. '**     inserting a backslash character as needed.
  578. '** Arguments:
  579. '**     szDir$  - full directory path (with optional ending "\")
  580. '**     szFile$ - filename to append to directory
  581. '** Returns:
  582. '**     Resulting fully qualified path name.
  583. '*************************************************************************
  584. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  585.     IF szDir$ = "" THEN
  586.         MakePath = szFile$
  587.     ELSEIF szFile$ = "" THEN
  588.         MakePath = szDir$
  589.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  590.         MakePath = szDir$ + szFile$
  591.     ELSE
  592.         MakePath = szDir$ + "\" + szFile$
  593.     END IF
  594. END FUNCTION
  595.  
  596. SUB UpdateWinG32(szOrig$) STATIC
  597.     '
  598.     ' Check the version of wing32.dll since cannot get version
  599.     ' checking for Win32 apps from Win16
  600.     '
  601.     FileNew$  = MakePath(szOrig$, "wing32.dll")
  602.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  603.  
  604.     IF IsWin32FileNewer(FileOrig$, FileNew$) THEN
  605.         RemoveFile FileOrig$, cmoForce
  606.     ELSE
  607.         RemoveFile FileNew$, cmoForce
  608.         RenameFilePlease FileOrig$, FileNew$
  609.     END IF
  610. END SUB                                                                
  611.                                                         
  612.                                                      
  613. FUNCTION CreateTitleINIFile(szINI$, szCD$, szDbPath$) STATIC AS INTEGER
  614.  
  615.     ramSize% = getSystemRAM()
  616.     ramSizeStr$ = str$( ramSize% )
  617.     ramSizeStr$ = ltrim$( ramSizeStr$ )
  618.  
  619.     CreateIniKeyValue szINI$, "METRICS", "CDROM", szCD$ , cmoOverwrite
  620.     CreateIniKeyValue szINI$, "METRICS", "RAM", ramSizeStr$, cmoOverwrite
  621.     CreateIniKeyValue szINI$, "METRICS", "VOLUME", "5" , cmoOverwrite
  622.  
  623.     CreateIniKeyValue szINI$, "DBPATH", "ROUTING", szDbPath$+"\ROUTING.MBF" , cmoOverwrite
  624.     CreateIniKeyValue szINI$, "DBPATH", "RUNTIME", szDbPath$+"\RUNTIME.MBF" , cmoOverwrite
  625.     CreateIniKeyValue szINI$, "DBPATH", "UNITBASE", szDbPath$+"\UNITBASE.MBF" , cmoOverwrite
  626.     CreateIniKeyValue szINI$, "DBPATH", "FILEBASE", szDbPath$+"\FILEBASE.MBF" , cmoOverwrite
  627.     CreateIniKeyValue szINI$, "DBPATH", "TIMELINE", szDbPath$+"\TL_BASE.MBF" , cmoOverwrite
  628.     CreateIniKeyValue szINI$, "DBPATH", "GCACHE", szDbPath$+"\GCACHE.MBF" , cmoOverwrite
  629.  
  630.     CreateTitleINIFile = 0                                              
  631.     
  632. END FUNCTION                                               
  633.  
  634.  
  635. FUNCTION CheckVideoSystem(WinMajVer%, WinMinVer%, ProcType%) STATIC AS INTEGER
  636. 'Check if system have necessary processor and version of Windows running to install Video for Windows
  637.     ''Video for Windows tests
  638.     IF WinMajVer% < 3 OR (WinMajVer% = 3 AND WinMinVer% < 10) THEN
  639.         i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  640.         END
  641.     END IF
  642.  
  643.     'Prevents installation on 286
  644.     IF ProcType% < 3 THEN
  645.         i% = DoMsgBox("Video for Windows requires a 386 or greater processor or emulator.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  646.         END
  647.     END IF
  648.  
  649.     ' Use Wowexec to determine version of NT.  3.1 did not stamp wowexec and wow returns 3.1 as version
  650.     IF OnWindowsNT() THEN
  651.       WowVersion$ = GetVersionOfFile(WinSys32Dir$ + "\wowexec.exe")
  652.       IF WowVersion$ = "" THEN
  653.          i% = DoMsgBox("Video for Windows does not run on Windows NT 3.1.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  654.          END
  655.       END IF
  656.     END IF
  657.  
  658. END FUNCTION
  659. 
  660.